import axios from 'axios'
import store from '@/store'
import { Message } from 'element-ui'
import router from '@/router' 
// 创建axios实例
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, //开发环境的基地址
 
  timeout: 20000 
})

// 请求拦截器
service.interceptors.request.use(
  // 成功执行
  (config)=>{
    // 注入token
    // store.getters.token
    if(store.getters.token){
      config.headers.Authorization=`Bearer ${store.getters.token}`
    }
    return config
  },
  // 失败执行
  (error)=>{
    
    return Promise.reject(error)
  }
)

// 响应拦截器
service.interceptors.response.use(
  // 成功执行
  (response)=>{
    // 判断数据类型是否为二进制流(blob)：instanceof Blob
    if(response.data instanceof(Blob)){
      return response.data//返回blob对象         
    }
    const {data,message,success}=response.data//默认JSON格式
    if(success){
      return data
    }else{
    Message.error(message)
    return Promise.reject(new Error(message))

    }
  },
  // 失败执行
  async (error)=>{
     if(error.response.status===401){
      // 提示用户登录超时
      Message.error('登录超时，请重新登录')
      // 说明token过期，失效了,调用退出登录逻辑
      await store.dispatch('user/logout')
      // 跳转到登录页
      router.push('/login')
      return Promise.reject(error)

    }
    Message.error(error.Message)
    return Promise.reject(error)

  }
)

export default service
